package logica.product;

import logica.exceptions.InvalidActionException;
import logica.exceptions.InvalidDataException;
import logica.exceptions.RequiredDataException;
import logica.interfaces.ProductIF;

/**
 * Um produto Simples do sistema de leilao virtual.
 *
 */
public class ProductSimple extends AbstractProduct {
	/**
	 * Construtor de um produto simples.
	 *
	 * @param owner
	 *            o login do dono do produto.
	 * @param name
	 *            nome do produto.
	 * @param description
	 *            descricao do produto.
	 * @param categoryId
	 *            identificador da categoria do produto.
	 * @param status
	 *            status do produto.
	 * @param quantity
	 *            quantidade de produtos.
	 * @param quantityInteress
	 *            quantidade minima de interessados.
	 * @param inicialPrice
	 *            preco inicial.
	 * @param type
	 *            identifica o tipo do produto (simples ou composto).
	 * @throws RequiredDataException
	 *             Se algum dado estiver faltando.
	 * @throws InvalidDataException
	 *             Se algum dado for invalido.
	 */
	public ProductSimple(String id, String owner, String name,
			String description, String categoryId, String status, int quantity,
			int quantityInteress, double inicialPrice, String type)
			throws InvalidDataException, RequiredDataException {
		super(id, owner, name, description, categoryId, status, quantity,
				quantityInteress, inicialPrice, type);
	}

	/**
	 * Sobreposicao do metodo que adiciona outros produtos a este. Os ids dos
	 * produtos sao passados como referencia
	 *
	 * @param String
	 *            idItem
	 * @throws InvalidActionException
	 *             Caso este metodo seja utilizado.
	 */
	@Override
	public void addItem(ProductIF idItem) throws InvalidActionException {
		throw new InvalidActionException();

	}

	/**
	 * Sobreposicao do metodo que remove produtos que compoem este. Os ids dos
	 * produtos sao passados como referencia
	 *
	 * @param String
	 *            idItem
	 * @return boolean
	 * @throws InvalidActionException
	 *             Caso este metodo seja utilizado.
	 */
	@Override
	public boolean removeItem(ProductIF idItem) throws InvalidActionException {
		throw new InvalidActionException();
	}

}
